package web

import (
	"jgt-oper/src/bll"
	"jgt-oper/src/context"
	"jgt-oper/src/schema"
)

// RCController 公共资源分类管理
type RCController struct {
	RCBll *bll.RCBll `inject:""`
}

// QueryPage 查询分页
func (a *RCController) QueryPage(ctx *context.Context) error {
	ctx.WriteOperateLog("RCController.QueryPage", "公共资源分类管理-查询分页")
	pageIndex, pageSize := ctx.GetPageIndex(), ctx.GetPageSize()
	params := ctx.Query("classification_name")

	total, items, err := a.RCBll.QueryPage(params, pageIndex, pageSize)
	if err != nil {
		return ctx.ResErrInternalServer(err)
	}

	result := map[string]interface{}{
		"list": items,
		"pagination": map[string]interface{}{
			"total":    total,
			"current":  pageIndex,
			"pageSize": pageSize,
		},
	}

	return ctx.ResSuccess(result)
}

// Create 创建
func (a *RCController) Create(ctx *context.Context) error {
	ctx.WriteOperateLog("RCController.Create", "公共资源分类管理-创建分类")
	item := new(schema.ResourceClassification)
	if err := ctx.ParseJSON(item); err != nil {
		return ctx.ResErrBadRequest(err)
	}

	item.Creator = ctx.GetUserID()
	err := a.RCBll.Create(item)
	if err != nil {
		return ctx.ResErrInternalServer(err)
	}
	return ctx.ResOK()
}

// Get 查询
func (a *RCController) Get(ctx *context.Context) error {
	item, err := a.RCBll.Get(ctx.Param("id"))
	if err != nil {
		return ctx.ResErrInternalServer(err)
	}
	return ctx.ResSuccess(item)
}

// Update 更新资源分类
func (a *RCController) Update(ctx *context.Context) error {
	ctx.WriteOperateLog("RCController.Update", "公共资源分类管理-更新数据")
	item := new(schema.ResourceClassification)
	if err := ctx.ParseJSON(item); err != nil {
		return ctx.ResErrBadRequest(err)
	}

	err := a.RCBll.Update(ctx.Param("id"), item)
	if err != nil {
		return ctx.ResErrInternalServer(err)
	}
	return ctx.ResOK()
}

// Delete 标记删除
func (a *RCController) Delete(ctx *context.Context) error {
	ctx.WriteOperateLog("RCController.Delete", "公共资源分类管理-删除数据")
	id := ctx.Param("id")
	err := a.RCBll.Delete(id)
	if err != nil {
		return ctx.ResErrInternalServer(err)
	}
	return ctx.ResOK()
}
